package ec.edu.ups.cidi.siia.plamdep.moduloweb.reportes;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.ejb.Stateless;
import ec.edu.ups.cidi.siia.plamdep.utils.configuracion.ConfiguracionGlobal;
import net.sf.jasperreports.engine.JasperExportManager;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.JasperPrint;
import net.sf.jasperreports.engine.data.JRBeanCollectionDataSource;
@Stateless
public class Reporte {
	
	
	public static void main() {
		
	}
	public void test(){
			ReporteCabecera rc=new ReporteCabecera();
	        rc.setAlgoritmoComparacion("VectorSpace");
	        rc.setAlgoritmoExtracion("N-Gramas");
	        rc.setCorreo("hfajardo@jasoft.ec");
	        rc.setFechaAnalisis("20-sep-2014");
	        rc.setFechaSolicitud("20-sep-2014");
	        rc.setHoraSolicitud("10:30");
	        rc.setHoraAnalisis("11:45");
	        rc.setDocumento("/opt/docs/plagio.doc");
	        rc.setTotalPlagio(30);
	       
	        ReporteDetalle det=new ReporteDetalle();
	        det.setFuente("www.wikipedia.com");
	        det.setTipoFuente("Web Page");
	        det.setTextoAnalizado("El plagio es la copia conciente de las ideas u obras originales de otras personas \n El plagio es la copia conciente de las ideas u obras originales de otras personas");
	        det.setPorcentajePlagio("30");
	        
	        
	        ReporteDetalle det1=new ReporteDetalle();
	        det1.setFuente("www.elrincondelvago.com");
	        det1.setTipoFuente("Web Page");
	        det1.setTextoAnalizado("El plagio es la copia conciente de las ideas u obras originales de otras personas asdasdasdasdasdsadasdasdasd este es el final del texto analizado....");
	        det1.setPorcentajePlagio("20");
	      
	        List<ReporteDetalle> detalleList=new ArrayList<ReporteDetalle>();
	        for(int i=0;i<10;i++)
	        {    
	            detalleList.add(det);
	             detalleList.add(det1);
	        }  
	       generarReporte(rc, detalleList,"1","c:/opt/test.pdf");
	}
	
	
	public void generarReporte(  ReporteCabecera rc,List<ReporteDetalle> detalleList,String codigo,String destFileName)
    {
		try{
			if(detalleList.size()==0)
				detalleList.add(new ReporteDetalle());
			
		String reporteName="reporte_analisis.jasper";
	       String subReportFileName="";

        subReportFileName =ConfiguracionGlobal.pathResources+"/reports_templates/jasper/" + reporteName;
        System.out.println("\n\n\n\nRUTA:"+subReportFileName);
        
        Map<String, Object> parameters = new HashMap<String, Object>();
        parameters.put("mail", rc.getCorreo());
        parameters.put("fechasolicitud",rc.getFechaSolicitud() );
        parameters.put("fechaanalisis",rc.getFechaAnalisis());
        parameters.put("horasolicitud",rc.getHoraSolicitud() );
        parameters.put("horaanalisis",rc.getHoraAnalisis() );
        parameters.put("algcomparacion",rc.getAlgoritmoComparacion());
        parameters.put("algextraccion",rc.getAlgoritmoExtracion() );
        parameters.put("documento",rc.getDocumento() );
        parameters.put("totalPlagio",rc.getTotalPlagio()+"");

        
        generarPDF(subReportFileName,parameters,detalleList,destFileName);
		}catch(Exception e){System.err.println("Error al generar el reporte");}
    }
    
    public void generarPDF(String subReportFileName, Map<String, Object> parameters, List detalleList, String destFileName   )
    {
      try
      {
        //JasperReport subreporte = JasperCompileManager.compileReport(subReportFileName);
        JRBeanCollectionDataSource dataSource= new JRBeanCollectionDataSource(detalleList);
        //JasperPrint documento = JasperFillManager.fillReport(subreporte, parameters, dataSource);
        JasperPrint documento=JasperFillManager.fillReport(subReportFileName,parameters, dataSource);
        JasperExportManager.exportReportToPdfFile(documento, destFileName);          
      } catch (Exception e) {
         e.printStackTrace();
      }
      System.out.println("Done filling!!! ...");
    }

	
}
